home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c++-part2 / 14434 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  7.8 KB

  1. Path: gmrc.gecm.com!newsmasters
  2. From: paul.johnson@gecm.com (Paul Johnson)
  3. Newsgroups: comp.lang.c++,comp.lang.eiffel,comp.lang.smalltalk,comp.object
  4. Subject: Re: OO language tools
  5. Date: 28 Mar 1996 11:56:57 GMT
  6. Organization: GEC-Marconi Research Centre
  7. Message-ID: <4jduq9$tb@miranda.gmrc.gecm.com>
  8. References: <4j4uau$9s5@the-fly.zip.com.au>
  9. NNTP-Posting-Host: polonius.gmrc.gecm.com
  10. X-Newsreader: WinVN 0.99.7
  11.  
  12. In article <4j4uau$9s5@the-fly.zip.com.au>, johnh@zip.com.au says...
  13.  
  14. >We are researching what tool sets are availible commercially for
  15. >developing embedded real-time software in the popular OO languages like C++,
  16. >Smalltalk, Eiffel etc.
  17.  
  18. I've been evaluating ISE Eiffel 3.3.4.  Here are some initial results.
  19.  
  20. I used a Pentium 90 machine with 16Mb running Windows 95.  Eiffelbench 
  21. was supplied on a CD-ROM for Windows 3.1.
  22.  
  23. Startup is a trifle clumsy.  You have to select a project, or start a 
  24. new one.  A "project" is held in a directory (which must exist before 
  25. you start), and Eiffelbench then creates a subdirectory for its datafiles.  
  26. This makes it a little difficult to identify the right directory unless 
  27. you know what you are doing.  A suffix-based filename system would work 
  28. better here, because Windows users will know what to expect.  Once you 
  29. have found the right directory, everything works OK.
  30.  
  31. The browser has some excellent facilities.  Once you are up and running, 
  32. you can view the system as an ACE file or a list of classes organised 
  33. alphabetically or by cluster.  If you click on a class name and drag it 
  34. to the class button, up pops a window with the class text.  Click a button 
  35. at the bottom of this window, and you can get the short, flat, or 
  36. short-flat forms.  All of these contain clickable class and feature names, 
  37. allowing you to wander around your system finding out what is happening.  
  38. Class texts in any form can also be exported in various formats to 
  39. produce printed documents, complete with bold keywords and italic comments.
  40.  
  41. Some of the longer operations carry warnings about how long it will take, 
  42. but these are applied a little inconsistantly.  For instance I usually 
  43. switched the "system" window from displaying the ACE file to displaying 
  44. a list of clusters and classes (which can then be opened via the browser).  
  45. This conversion only took a few seconds, but still carried a warning.  
  46. On the other hand, switching from class text to short-flat view might take 
  47. several minutes but carried no warning.  Overall there seemed to be some 
  48. rough edges in the design of the user interface.
  49.  
  50. It was not clear how I could create the first class.  I called up the 
  51. template
  52. ACE file, and declared a new cluster in it.  Then I clicked on the "Class" 
  53. tool and typed in the name of the class.  The system asked what cluster,
  54. but would not accept the name I entered.  I eventually had to resort to an 
  55. outside text editor.  Once a ".e" file existed, Eiffelbench accepted that 
  56. the cluster was real, and allowed me to create other files there.  
  57.  
  58. The browser and its different views of the system are only available after 
  59. you have compiled the system.  This creates a catch-22 situation, because 
  60. errors and inconsistencies can stop you from compiling, and the lack of 
  61. browser facilities makes it much harder to track down the problem.  It 
  62. would be nice if the compilation could continue in spite of errors in 
  63. some classes.  Then library classes would be browsable even if their 
  64. erroneous clients are not.  There was no indication as to whether the 
  65. browser facilities were available (e.g. grayed-out buttons).  They simply 
  66. stopped working until the compilation had succeeded.
  67.  
  68. The "melting ice" technology worked well.  Turnaround was fast even on 
  69. complex systems.  The interpreted side of the system could keep up with 
  70. the demands of testing.  I haven't got a C compiler, so I can't comment 
  71. on the compiled code.
  72.  
  73. I used an early version of the graphics classes to do some animation.  
  74. This was not a fair test because I had no manual and was trying to do 
  75. something moderately unusual.  The classes seemed a bit slap-dash in their 
  76. design, but generally functioned OK.  I gather that ISE have since improved 
  77. this side of the product considerably.
  78.  
  79. Reliability was disappointing (although I have seen worse in other 
  80. commercial tools).  The browser crashed unpredictably when I navigated 
  81. from one class to another, and sometimes the browser's "hot spots" got 
  82. out of synch with the class text.  Given Eiffel's support for correct and 
  83. reliable software, I expected better.  However I was running a Windows 3.1 
  84. version on Windows 95, and I gather that ISE have improved the reliability 
  85. since version 3.3.4.
  86.  
  87. I don't like the design of the data structure libraries.  The phrase 
  88. "kitchen sink" springs to mind.  Inheritance was used inappropriately, and 
  89. in one case I had to turn off assertion checking for the classes because a 
  90. descendant violated an ancestors invariants.  This suggests poor review of 
  91. designs and lack of thorough testing.
  92.  
  93. ISE Eiffel is not a complete solution for software engineering.  You need 
  94. to integrate your own configuration control and library release systems.  
  95. This is important.  (Note that SCCS uses "%" characters to tag version 
  96. control fields in program text, which conflicts with Eiffel's use of them 
  97. as escape characters for string literals.)  Eiffelbench does include an 
  98. option for "precompiling" libraries to reduce the time and space required 
  99. for their client applications during development.
  100.  
  101. Debugger facilities were rather limited.  You can put breakpoints on 
  102. routines, but not lines.  Tracing facilities were similarly limited.  
  103. If an error occured then a stack trace was generated, but it only told 
  104. you what routine had failed, and what call was being made at the time.  
  105. If you called the same routine in several places this was was less than 
  106. useful.  There was no access to local variables from the debugger, and 
  107. so the only way to figure out what was happening was to insert "debug" 
  108. statements (which are supported by the language) into the faulty routine.  
  109. This should not be necessary.  The debugger should include access to local 
  110. variables, and it should know about source-code line numbers.  Ideally I 
  111. should be able to drag a stack frame to the class button, and be shown 
  112. the offending section of code.  Access to object attributes was good: you 
  113. could drag an object ID onto the object button and be shown its state. 
  114. Objects could then be browsed in a similar way to classes.
  115.  
  116. It would be nice if classes could generate their own version of their 
  117. state for the debugger, as well as having the raw attribute value list 
  118. available.  If I suspect that one of my routines has put the wrong value 
  119. in a list then I want to see the contents of the list in one window (like 
  120. an array) rather than having to navigate its private pointer structure 
  121. manually.  Something like the "ascii" feature in ANY could be called to 
  122. generate this (although something would have to be done about handling 
  123. reference values).  It would also be useful to be able to call features 
  124. from within the debugger.
  125.  
  126. On the other hand, the Eiffel assertion facilities count for a lot.  At 
  127. least bugs were caught at their source, rather than later in the program.  
  128. But once I had the offending routine code (isolated by an exception 
  129. violation), actually locating the bug sometimes proved rather hard.
  130.  
  131. Overall I would be happy to take ISE Eiffel on board for small to medium
  132. projects.  It might be fine for a large project as well, but I haven't 
  133. got the experience to comment on that.  However the Rainbow project seems 
  134. very happy with it.
  135.  
  136. Paul.
  137.  
  138. -- 
  139. Paul Johnson            | GEC-Marconi Ltd is not responsible for my opinions. |
  140. +44 1245 242244         +-----------+-----------------------------------------+
  141. Work: <paul.johnson@gecm.com>       | You are lost in a twisty maze of little
  142. Home: <Paul@treetop.demon.co.uk>    | standards, all different.
  143.  
  144.